package main

import "fmt"

//函数作为返回值

func add(x, y int) int {
	return x + y
}

func sub(x, y int) int {
	return x - y
}

//定义一个方法类型
type calcType func(int, int) int

//返回值为一个方法类型
func do(o string) calcType {
	switch o {
	case "+":
		return add
	case "-":
		return sub
	case "*":
		return func(x, y int) int {
			return x * y
		}
	default:
		return nil
	}
}

func main() {
	//var a = do("+")       //返回add方法
	//fmt.Println(a(12, 4)) //执行add方法

	b := do("*")   //返回*对应的匿名方法
	fmt.Println(b) //执行匿名方法
}
